package com.web.tag;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;

import com.web.tag.bean.PageModel;

public class PageTag extends TagSupport {

	/**
	 * Jsoft分页控件
	 */
	private static final long serialVersionUID = 20100118;
	private String style = "manu";
	private String model;
	private String param = PageModel.PAGE;

	public int doStartTag() throws JspException {
		JspWriter out = pageContext.getOut();
		if (model == null)
			model = PageModel.PAGEMODEL;
		PageModel pageModel = (PageModel) pageContext.findAttribute(model);
		if (pageModel == null)
			return SKIP_BODY;
		String paths = pageModel.getPaths() + (param == null ? PageModel.PAGE : param.trim()) + "=";
		String pathAdd = pageModel.getPathAdd() == null ? "" : pageModel.getPathAdd();
		try {
			out.print("<div class=\"" + this.style + "\">");
			// **************上一页***************
			if (1 == pageModel.getPageNum()) {
				out.print("<span class=\"disabled\"> &laquo;  Prev</span>");
			} else {
				out.print("<a href=\"" + paths + (pageModel.getPageNum() - 1) + pathAdd + "\"> &laquo;  Prev</a>");
			}
			// **************中间页***************
			if (pageModel.getPageCount() > 6) {
				if (1 == pageModel.getPageNum()) {
					out.print("<span class=\"current\">" + 1 + "</span>");
				} else {
					out.print("<a href=\"" + paths + 1 + pathAdd + "\">" + 1 + "</a>");
				}
				if ((1 + 1 + 3) < pageModel.getPageNum()) {
					out.print("<span>...</span>");
				}
				for (int j = pageModel.getPageNum() - 3; j <= pageModel.getPageNum() + 3; j++) {
					if (j <= 1) {
						continue;
					} else if (j >= pageModel.getPageCount()) {
						continue;
					} else if (j == pageModel.getPageNum()) {
						out.print("<span class=\"current\">" + j + "</span>");
					} else {
						out.print("<a href=\"" + paths + j + pathAdd + "\">" + j + "</a>");
					}
				}
				if ((pageModel.getPageCount() - 4) > pageModel.getPageNum()) {
					out.print("<span>...</span>");
				}
				if (pageModel.getPageCount() == pageModel.getPageNum()) {
					out.print("<span class=\"current\">" + pageModel.getPageCount() + "</span>");
				} else {
					out.print("<a href=\"" + paths + pageModel.getPageCount() + pathAdd + "\">" + pageModel.getPageCount() + "</a>");
				}
			} else {
				for (int i = 1; i <= pageModel.getPageCount(); i++) {
					if (i == pageModel.getPageNum()) {
						out.print("<span class=\"current\">" + i + "</span>");
					} else {
						out.print("<a href=\"" + paths + i + pathAdd + "\">" + i + "</a>");
					}
				}
			}
			// **************下一页***************
			if (pageModel.getPageCount() > pageModel.getPageNum()) {
				out.print("<a href=\"" + paths + (pageModel.getPageNum() + 1) + pathAdd + "\">Next  &raquo; </a>");
			} else {
				out.print("<span class=\"disabled\">Next  &raquo; </span>");
			}
			out.print("</div>");
			out.flush();
		} catch (Exception e) {
		}
		return SKIP_BODY;
	}

	public String getStyle() {
		return style;
	}

	public void setStyle(String style) {
		this.style = style;
	}

	public String getModel() {
		return model;
	}

	public void setModel(String model) {
		this.model = model;
	}

	public String getParam() {
		return param;
	}

	public void setParam(String param) {
		this.param = param;
	}

}
